package main

import (
	"fmt"
	"math/rand"
	"time"
)

func init() {
	rand.Seed(time.Now().UnixNano())
}

func main() {
	// 生成了包括3个通道的数组
	intChannels := [3]chan int{
		make(chan int, 1),
		make(chan int, 1),
		make(chan int, 1),
	}
	// 生成返范围在[0,2]的随机数，效果就是随机选择一个通道
	index := rand.Intn(3)
	fmt.Println("index:", index)
	intChannels[index] <- index
	// 哪个通道中远元素可以取出，那个对应的分支就会被执行
	select {
	case <-intChannels[0]:
		fmt.Println("选中了第一个通道")
	case <-intChannels[1]:
		fmt.Println("选中了第二个通道")
	case elem := <- intChannels[2]:
		fmt.Println("选中了第三个通道，值:", elem)
	default:  // 这个默认分支不会被选中
		fmt.Println("没有选中任何通道")
	}
}


